package com.yqh.controller;

import com.github.pagehelper.PageInfo;
import com.yqh.Result;
import com.yqh.dto.ProductCategorySearchDTO;
import com.yqh.entity.ProductCategory;
import com.yqh.service.ProductCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 商品分类模块
 *
 * @author 阳秋豪
 * @createTime 2024/3/22
 */
@CrossOrigin
@RestController
@RequestMapping("/productCategory")
public class ProductCategoryController {
    @Autowired
    private ProductCategoryService productCategoryService;

    /**
     * 查询所有商品分类信息
     * @return 所有商品分类信息
     */
    @GetMapping
    private Result getAllProductCategory() {
        List<ProductCategory> productCategoryList = productCategoryService.getAllProductCategory();
        return Result.success(productCategoryList);
    }

    /**
     * 条件分页查询
     *
     * @param productCategorySearchDTO 查询参数
     * @return 商品分页表信息
     */
    @GetMapping("/search")
    private Result getSearchProduct(ProductCategorySearchDTO productCategorySearchDTO) {
        PageInfo<ProductCategory> productPageInfo = productCategoryService.getSearchProduct(productCategorySearchDTO);
        return Result.success(productPageInfo);
    }


    /**
     * 添加商品分类
     *
     * @param productCategory 商品分类信息
     * @return 成功
     */
    @PostMapping("/add")
    private Result addProduct(@RequestBody ProductCategory productCategory) {
        productCategoryService.addProductCategory(productCategory);
        return Result.success();
    }

    /**
     * 批量删除商品
     *
     * @param productCategoryList 前端选中要删除的商品分类集合
     * @return 成功
     */
    @PostMapping("/deleteBatch")
    private Result deleteBatch(@RequestBody List<ProductCategory> productCategoryList) {
        productCategoryList.forEach(productCategory -> productCategoryService.deleteProductCategory(productCategory.getProductCategoryId()));
        return Result.success();
    }

    /**
     * 编辑商品
     *
     * @param productCategory 商品信息
     * @return 成功
     */
    @PostMapping("/alter")
    private Result alterProduct(@RequestBody ProductCategory productCategory) {
        productCategoryService.alterProduct(productCategory);
        return Result.success();
    }

    /**
     * 删除商品
     *
     * @param productCategoryId 商品分类 id
     * @return 成功
     */
    @DeleteMapping("/delete/{productCategoryId}")
    private Result deleteProduct(@PathVariable Integer productCategoryId) {
        productCategoryService.deleteProductCategory(productCategoryId);
        return Result.success();
    }
}
